require "import"
库=import "jwyhhsk"
import "android.app.*"
import "android.os.*"
import "android.widget.*"
import "android.view.*"
import "com.androlua.*"
import "android.widget.LinearLayout"
import "com.lua.*"
import "layout"
import "java.lang.Thread"
activity.setTheme(android.R.style.Theme_DeviceDefault_NoActionBar_Fullscreen)
activity.setContentView(loadlayout(layout))

--加载动画
开始动画=库.布局().动画_双圆()
开始动画.设置父布局("all")
开始动画.设置动画布局(
  {
    LinearLayout;
    layout_height="match_parent";
    layout_width="match_parent";
    background="#ff24ff99";
    orientation="vertical";
    gravity="center";
    {
      TextView;
      textColor="#ffffffff";
      textSize="64sp";
      text=activity.getPackageManager()
      .getPackageInfo(activity.getPackageName(), 0)
      .applicationInfo
      .loadLabel(activity.getPackageManager());
    };
    {
      TextView;
      textSize="28sp";
      textColor="#ffffffff";
      text="正在启动，请稍后";
      id="提示文字";
    };
    {
      ProgressBar;
      id="progressbar";
      layout_marginTop="100dp";
    };
  }
)
开始动画.设置主布局(
  {
    FrameLayout;
    layout_height="fill";
    layout_width="fill";
    {
      LuaWebView;
      id="yzw";
      layout_height="fill";
      layout_width="fill";
    };
    {
      LuaWebView;
      id="webview";
      layout_height="fill";
      layout_width="fill";
    }
  }
)
开始动画.设置动画时长(1000)
开始动画.设置圆1(activity.getWidth()*0.2,--距右
activity.getWidth()*0.2)--距顶
开始动画.设置圆2(activity.getWidth()*0.2,--距左
activity.getWidth()*0.2)--距底
开始动画.设置启动回调(
  function()
    function 设置动画提示(内容)
      提示文字.text=内容
      提示文字2.text=内容
    end
    progressbar.IndeterminateDrawable.setColorFilter(PorterDuffColorFilter(0xFFFFFFFF,PorterDuff.Mode.SRC_ATOP))
    progressbar2.IndeterminateDrawable.setColorFilter(PorterDuffColorFilter(0xFFFFFFFF,PorterDuff.Mode.SRC_ATOP))
    设置动画提示("正在加载配置文件")
    data={}
    webData={}
    if 库.文件操作("/data/data/"..activity.getPackageName().."/config.json").是否文件()==true then
      配置=库.文件操作("/data/data/"..activity.getPackageName().."/config.json").读取()
      配置=库.变量操作(库.变量操作(配置).rc4解密("emmm8848")).json2array()
      库.控件操作(yzw).浏览器()
      .加载链接(配置.域码)
    else
      配置={}
      data.初次使用=true
    end
    function 刷新配置 ()
      库.文件操作("/data/data/"..activity.getPackageName().."/config.json")
      .更新(库.变量操作(库.变量操作(配置).array2json()).rc4加密("emmm8848"))
    end
    设置动画提示("正在初始化环境")
    --初始化log
    webviewLog=[[主webview日志：]]
    --console.log监听
    webview.setWebChromeClient(
      LuaWebChrome(
        LuaWebChrome.IWebChrine{
          onConsoleMessage=function(message,lineNumber,sourceId)
            local log=""
            if lineNumber==nil then
              log=message.message()
              lineNumber=message.lineNumber()
              sourceId=message.sourceId()
             else
              log=message
            end
            --如果是js调用
            if string.find(log,"jwyhhsk")~=nil then
              local name=log:match("【nameStart】(.-)【nameEnd】")
              local backName=log:match("【backNameStart】(.-)【backNameEnd】")
              local other=log:match("【otherStart】(.-)【otherEnd】")
              local result=onJs[name](库.变量操作(other).json2array())
              if result~=nil then
                库
                .控件操作(webview)
                .浏览器()
                .加载JS(backName.."("..库.变量操作(result).array2json()..")")
              end
              log="调用了函数"..name.."|参数是"..tostring(other).."|回调函数是"
              log=log..tostring(backName).."|返回值是"..tostring(result)
            end
            webviewLog=webviewLog.."\n"..lineNumber.."\n→"..log.."\n→"..sourceId
          end
        }
      )
    )
    --console.log监听（for yzw）
    yzw.setWebChromeClient(
      LuaWebChrome(
        LuaWebChrome.IWebChrine{
          onConsoleMessage=function(message,lineNumber,sourceId)
            local log=""
            if lineNumber==nil then
              log=message.message()
              lineNumber=message.lineNumber()
              sourceId=message.sourceId()
             else
              log=message
            end
						--print(log)
            --如果是js调用
            if string.find(log,"jwyhhsk")~=nil then
              local name=log:match("【nameStart】(.-)【nameEnd】")
              local backName=log:match("【backNameStart】(.-)【backNameEnd】")
              local other=log:match("【otherStart】(.-)【otherEnd】")
              local result=yzwOnJs[name](库.变量操作(other).json2array())
              if result~=nil then
                库
                .控件操作(yzw)
                .浏览器()
                .加载JS(backName.."("..库.变量操作(result).array2json()..")")
              end
              log="调用了函数"..name.."|参数是"..tostring(other).."|回调函数是"
              log=log..tostring(backName).."|返回值是"..tostring(result)
            end
          end
        }
      )
    )

    --浏览器加载事件监听
    yzw.setWebViewClient{
      shouldOverrideUrlLoading=function(view,url)
        --Url即将跳转
      end,
      onPageStarted=function(view,url,favicon)
        --网页加载
      end,
      onPageFinished=function(view,url)
        --加载错误判断
        if data.isYzwError~=true then
          data.isYzwSuccess = true
          --延时加载事件
          延时执行({1000,"yzwOnPageFinished",view,url})
        end
        data.isYzwError = false
        --延时加载事件
        延时执行({1000,"yzwOnAllPageFinished",view,url})
      end,
      onReceivedError=function(view,request,error)
        data.isYzwError = true
        data.isYzwSuccess = false
        --回调失败的相关操作
        --延时加载事件
        延时执行({1000,"yzwOnReceivedError",view,request,error})
      end
    }

    --初始化变量
    function yzwOnPageFinished(参数)
      --网页加载完成时

      --加载需要调用的函数
      yzwOnFinish(参数[3],参数[4])
    end
    function yzwOnFinish(view,url)
    end
    function yzwOnAllPageFinished (参数)
      --加载网页调试器
      库.控件操作(yzw).浏览器()
      .加载JS([[(function () { var script = document.createElement('script'); script.src="//cdn.jsdelivr.net/npm/eruda"; document.body.appendChild(script); script.onload = function () { eruda.init() } })();]])

      --注入函数
      库.控件操作(yzw).浏览器()
      .加载JS([[]]
      ..[[function callApp(name, backName, other) {]]
      ..[[  console.log("jwyhhsk" + "【nameStart】" + name + "【nameEnd】" + "【backNameStart】" + backName + "【backNameEnd】" + "【otherStart】" + other + "【otherEnd】");]]
      ..[[}]]
      )
      yzwOnAllFinished(参数[3],参数[4])
    end
    function yzwOnAllFinished (view,url)
    end
    function yzwOnReceivedError (参数)
      yzwOnError(参数[3],参数[4],参数[5])
    end
    function yzwOnError(view,request,error)
    end
    --声明函数（操作vue.js的data）
    function 更新数据(data)
      库
      .控件操作(webview)
      .浏览器()
      .加载JS("setData("..库.变量操作(data).array2json()..");")
    end
    --声明函数（延时执行）
    function 延时执行(参数)
      thread(function(参数)
        require "import"
        Thread.sleep(参数[1])
        call(参数[2],参数)
      end,参数)
    end
    --声明函数（加载验证码）
    function 加载验证码(回调)
      库.控件操作(yzw).浏览器()
      .加载JS([[]]
      ..[[function getBase64Image(img) {]]
      ..[[  var canvas = document.createElement("canvas");]]
      ..[[  canvas.width = img.width;]]
      ..[[  canvas.height = img.height;]]
      ..[[  var ctx = canvas.getContext("2d");]]
      ..[[  ctx.drawImage(img, 0, 0, img.width, img.height);]]
      ..[[  var dataURL = canvas.toDataURL("image/png");]]
      ..[[  return dataURL;]]
      ..[[};]]
      ..[[var img = document.createElement('img');]]
      ..[[img.onload =function() {]]
      ..[[  var data = getBase64Image(img);]]
      ..[[  var result={};]]
      ..[[  result.back="]]..回调..[[";]]
      ..[[  result.data=data;]]
      ..[[  callApp("加载验证码","",JSON.stringify(result));]]
      ..[[};]]
      ..[[img.src = '/tool/getVerify/?d='+Math.random();]]
      ..[[document.body.appendChild(img);]]
      )
    end
    --声明函数（登录）
    function 登录(回调,账号,密码,验证码)
      data.登录={
        回调=回调;
        账号=账号;
        密码=密码;
        验证码=验证码;
      }
      库.控件操作(yzw).浏览器()
      .加载JS([[]]
      ..[[function emmm_getPrev(body){]]
      ..[[  if (body.match(/<form([\s\S]*)<\/form>/gi)) {]]
      ..[[    var prev=body.match(/<form([\s\S]*)<\/form>/gi)[0].match(/<input type="hidden"([^>]*)>/gi);]]
      ..[[    var prev_r="";]]
      ..[[    for (var index in prev) {]]
      ..[[      if (prev.hasOwnProperty(index)) {]]
      ..[[        var name=prev[index].match(/name="([^"]*)"/gi)[0].replace("name=\"","").replace("\"","");]]
      ..[[        var value=prev[index].match(/value="([^"]*)"/gi)[0].replace("value=\"","").replace("\"","");]]
      ..[[        prev_r=prev_r+"&"+name+"="+value;]]
      ..[[      }]]
      ..[[    }]]
      ..[[    doAjax("member/login/","user=]]..data.登录.账号..[[&pass=]]..data.登录.密码..[[&imgcode=]]..data.登录.验证码..[["+prev_r,"emmm_login", "POST", 0);]]
      ..[[  } else {]]
      ..[[    emmm_login(body);]]
      ..[[  }]]
      ..[[};]]
      ..[[function emmm_login(body){]]
      ..[[  console.log("jwyhhsk" + "【nameStart】" + "登录" + "【nameEnd】" + "【backNameStart】" + "" + "【backNameEnd】" + "【otherStart】" + JSON.stringify([body.replace(/\n/gi,"").replace(/<!DOCTYPE.+<\/h1>/gi,"").replace(/<\/p>.+<\/html>/gi,"").replace(/<p class=".+">/gi,"")]) + "【otherEnd】");]]
      ..[[};]]
      ..[[doAjax("member/log/","","emmm_getPrev", "GET", 0);]]
      )
    end
    --声明函数（注册）
    function 注册(回调,账号,密码,验证码)
      data.注册={
        回调=回调;
        账号=账号;
        密码=密码;
        验证码=验证码;
      }
      库.控件操作(yzw).浏览器()
      .加载JS([[]]
      ..[[function emmm_getPrev(body){]]
      ..[[  if (body.match(/<form([\s\S]*)<\/form>/gi)) {]]
      ..[[    var prev=body.match(/<form([\s\S]*)<\/form>/gi)[0].match(/<input type="hidden"([^>]*)>/gi);]]
      ..[[    var prev_r="";]]
      ..[[    for (var index in prev) {]]
      ..[[      if (prev.hasOwnProperty(index)) {]]
      ..[[        var name=prev[index].match(/name="([^"]*)"/gi)[0].replace("name=\"","").replace("\"","");]]
      ..[[        var value=prev[index].match(/value="([^"]*)"/gi)[0].replace("value=\"","").replace("\"","");]]
      ..[[        prev_r=prev_r+"&"+name+"="+value;]]
      ..[[      }]]
      ..[[    }]]
      ..[[    doAjax("member/register/","user=]]..data.登录.账号..[[&pass=]]..data.登录.密码..[[&imgcode=]]..data.登录.验证码..[["+prev_r,"emmm_login", "POST", 0);]]
      ..[[  } else {]]
      ..[[    emmm_register(body);]]
      ..[[  }]]
      ..[[};]]
      ..[[function emmm_register(body){]]
      ..[[  callApp("注册","",JSON.stringify([body.replace(/\n/gi,"").replace(/<!DOCTYPE.+<\/h1>/gi,"").replace(/<\/p>.+<\/html>/gi,"").replace(/<p class=".+">/gi,"")]));]]
      ..[[};]]
      ..[[doAjax("member/register/","","emmm_getPrev", "GET", 0);]]
      )
    end
    --声明函数（是否登录）
    function 是否登录()
      库.控件操作(yzw).浏览器()
      .加载JS([[]]
      ..[[function emmm_getPrev(body){]]
      ..[[  var prev=body.replace(/\n/gi,"").replace(/<!DOCTYPE.+name="__prev__" content="/gi,"").replace(/" \/><\/head>.+<\/html>/gi,"");]]
      ..[[  doAjax("member/log/","username=emmm_is_login&password=emmm_is_login","emmm_login", "POST", 0);]]
      ..[[};]]
      ..[[function emmm_login(body){]]
      ..[[    callApp("登录","",JSON.stringify([body.replace(/\n/gi,"").replace(/<!DOCTYPE.+<\/h1>/gi,"").replace(/<\/p>.+<\/html>/gi,"").replace(/<p class=".+">/gi,"")]));]]
      ..[[};]]
      ..[[doAjax("member/log/","username=getprev&password=getprev","emmm_getPrev", "POST", 0);]]
      )
    end
    --声明函数（获取最近阅读）
    function 获取最近阅读()
      库
      .控件操作(yzw)
      .浏览器()
    	.加载JS([[]]
      ..[[var books = getBook();]]
      ..[[var result=[];]]
      ..[[if (books.length)]]
      ..[[{]]
      ..[[  for (var i = 0; i < books.length; i++)]]
      ..[[  {]]
      ..[[    result[i]={};]]
      ..[[    result[i].chapter_code=books[i][1];]]
      ..[[    result[i].book_code=books[i][0];]]
      ..[[    result[i].chapter_name="最近阅读:".concat(books[i][3]);]]
      ..[[    result[i].book_title=books[i][2];]]
      ..[[    result[i].loading=true;]]
      ..[[    result[i].id=i;]]
      ..[[  }]]
      ..[[}]]
      ..[[else]]
      ..[[{]]
      ..[[  result[0]="无";]]
      ..[[}]]
      ..[[callApp("获取最近阅读","",JSON.stringify(result));]]
      )
    end
    --声明函数（获取书架）
    function 获取书架()
      库
      .控件操作(yzw)
      .浏览器()
    	.加载JS([[]]
      ..[[function emmm_getBookshelf(body){]]
      ..[[  var 内容=body.replace(/\n/gi,"").replace(/\t/gi,"").replace(/<!DOCTYPE.+<\/style>/gi,"").replace(/<div class="lb_top c_big lb_topshow">.+<div style="margin-top:45px;">/gi,"").replace(/<\/div><div id="foot" class="foot">.+<\/html>/gi,"");]]
      ..[[  if (内容=="") {]]
      ..[[    var result=["无"];]]
      ..[[  } else {]]
      ..[[    var result=[];]]
      ..[[    var 停止=false;]]
      ..[[    var i=0;]]
      ..[[    while (停止!=true) {]]
      ..[[      var 书str=内容.replace(/<\/table><table class='bookone'.+<\/table>/gi,"</table>")]]
      ..[[      .replace(/<\/table><table class='bookone'.+<\/table>/gi,"</table>")]]
      ..[[      .replace(/<\/table><table class='bookone'.+<\/table>/gi,"</table>")]]
      ..[[      .replace(/<\/table><table class='bookone'.+<\/table>/gi,"</table>")]]
      ..[[      .replace(/<\/table><table class='bookone'.+<\/table>/gi,"</table>")]]
      ..[[      .replace(/<\/table><table class='bookone'.+<\/table>/gi,"</table>");]]
      ..[[      if (书str==内容) {]]
      ..[[        停止=true;]]
      ..[[      }]]
      ..[[      内容=内容.replace(书str,"");]]
      ..[[      result[i]={loading:true,id:i,info:0};]]
      ..[[      var 书签=书str.replace(/<table class='bookone'.+class='case_shuqian'>/gi,"").replace(/<\/td><\/tr><tr><td class='case_del'>.+<\/font><\/a><\/td><\/tr><\/table><\/td><\/tr><\/table>/gi,"");]]
      ..[[      if (书签=="书签：无书签") {]]
      ..[[        result[i].chapter_code="无";]]
      ..[[        result[i].chapter_name="还未开始阅读";]]
      ..[[      } else {]]
      ..[[        result[i].chapter_code=书签.replace(/.html">.+<\/a>/gi,"").replace(/书签：<a href="\/novel\/.+\//gi,"");]]
      ..[[        result[i].chapter_name="最近阅读:".concat(书签.replace(/书签：.+.html">/gi,"").replace("</a>",""));]]
      ..[[      }]]
      ..[[      result[i].book_code=书str.replace("<table class='bookone' id=","").replace(/><tr><td><table><tr><td class='case_name'>书名：.+<\/font><\/a><\/td><\/tr><\/table><\/td><\/tr><\/table>/gi,"");]]
      ..[[      result[i].book_title=书str.replace(/<table class='bookone' id=.+<td class='case_name'>书名：/gi,"").replace(/<\/a><\/td><\/tr><tr><td class='case_shuqian.+<\/font><\/a><\/td><\/tr><\/table><\/td><\/tr><\/table>/gi,"").replace(/<a href='.+'>/gi,"");]]
      ..[[      i++;]]
      ..[[    }]]
      ..[[  }]]
      ..[[  console.log("jwyhhsk" + "【nameStart】" + "获取书架" + "【nameEnd】" + "【backNameStart】" + "" + "【backNameEnd】" + "【otherStart】" + JSON.stringify(result) + "【otherEnd】");]]
      ..[[};]]
      ..[[doAjax("bookcase/","","emmm_getBookshelf", "GET", 0);]]
      )
    end
    --声明函数（书籍简介）
    function 书籍简介(book_code)
      库
      .控件操作(yzw)
      .浏览器()
    	.加载JS([[]]
      ..[[function emmm_getBook(body){]]
      ..[[  var result={};]]
      ..[[  result.book_code=]]..book_code..[[;]]
      ..[[  result.writer=body.match(/by (.+)<\/title>/gi)[0].replace("by ","").replace("<\/title>","");]]
      ..[[  result.time=body.match(/<div>更新时间：<time>(.+)<\/time><\/div>/gi)[0].replace("<div>更新时间：<time>","").replace("<\/time><\/div>","");]]
      ..[[  result.synopsis=body.match(/name="description"([\s\S]*)name="MobileOptimized"/gi)[0].replace("name=\"description\" content=\"","").replace(/" \/>([\s\S]*)MobileOptimized"/gi,"");]]
      ..[[  var token=body.match(/\/tool\/displayGrade\/([^,]*)\//gi)[0];]]
      ..[[  var xhr;]]
      ..[[  if(window.XMLHttpRequest){]]
      ..[[    xhr = new XMLHttpRequest();]]
      ..[[  }else if(window.ActiveXObject){]]
      ..[[    xhr = new window.ActiveXObject();]]
      ..[[  }else{]]
      ..[[    alert("请升级至最新版本的浏览器");]]
      ..[[  }]]
      ..[[  if(xhr !=null){]]
      ..[[    xhr.open("GET",token,true);]]
      ..[[    xhr.send(null);]]
      ..[[    xhr.onreadystatechange = function(){]]
      ..[[      if(xhr.readyState == 4 && xhr.status == 200){]]
      ..[[        var res = JSON.parse(xhr.responseText);]]
      ..[[        result.starPeople=Number(res[0].total)+Number(res[1].total)+Number(res[2].total);]]
      ..[[        result.star=Math.round((Number(res[0].total)*0+Number(res[1].total)*5+Number(res[2].total)*10)*100/result.starPeople)/100;]]
      ..[[        if (res[3].isGrade==0) {]]
      ..[[          result.myStar="未评分";]]
      ..[[          result.myStarState=false;]]
      ..[[        } else {]]
      ..[[          var starName=["不好看(0分)","还可以(5分)","很不错(10分)"];]]
      ..[[          result.myStar=starName[res[3].vote];]]
      ..[[          result.myStarState=true;]]
      ..[[        }]]
      ..[[        callApp("书籍简介","",JSON.stringify(result));]]
      ..[[      }]]
      ..[[    };]]
      ..[[  }]]
      ..[[};]]
      ..[[doAjax("novel/]]..book_code..[[.html","","emmm_getBook", "GET", 0);]]
      )
    end
    function 开始阅读(book_code,chapter_code)
      库
      .控件操作(yzw)
      .浏览器()
    	.加载JS([[]]
      ..[[function emmm_getChapter(body){]]
      ..[[  var result={};]]
      ..[[  result.book_code="]]..book_code..[[";]]
      ..[[  result.book_title=secret(body.match(/#nr_title([^;]*)\;/gi)[0].match(/\"(.+)\"/gi)[0].replace(/\"/gi,""),body.match(/#nr_title([^;]*)\;/gi)[0].match(/\, \'(.+)\'\,/gi)[0].replace(/[', ]/gi,""),true);]]
      ..[[  result.chapter_name=body.match(/#nr_title([^;]*)\;/gi)[0].match(/\+ \'(.+)\'/gi)[0].replace(/\'/gi,"").replace("+  - ","");]]
      ..[[  result.hasTitle=true;]]
      ..[[  shuqian(]]..book_code..[[,]]..chapter_code..[[,result.chapter_name);]]
      ..[[  var aj = $.ajax( {]]
      ..[[    url:'/api/chapter/',]]
      ..[[    data:{]]
      ..[[      aid : ]]..book_code..[[,]]
      ..[[      cid : ]]..chapter_code..[[,]]
      ..[[    },]]
      ..[[    type:'post',]]
      ..[[    cache:true,]]
      ..[[    dataType:'json',]]
      ..[[    success:function(data) {]]
      ..[[      if(data.status == 1 ){]]
      ..[[        if (data.page.next=="") {]]
      ..[[          result.nextChapter_code="无";]]
      ..[[        } else {]]
      ..[[          result.nextChapter_code=data.page.next.replace("/","");]]
      ..[[        }]]
      ..[[        if (data.page.prev=="") {]]
      ..[[          result.lastChapter_code="无";]]
      ..[[        } else {]]
      ..[[          result.lastChapter_code=data.page.prev.replace("/","");]]
      ..[[        }]]
      ..[[        result.chapter_inner=secret(data.data, data.key, true).match(/<p>(.+)<\/p>/gi);]]
      ..[[        for (var i in result.chapter_inner){]]
      ..[[          if (result.chapter_inner.hasOwnProperty(i)) {]]
      ..[[            result.chapter_inner[i]=result.chapter_inner[i].replace("<p>","").replace("</p>","");]]
      ..[[          }]]
      ..[[        }]]
      ..[[        callApp("开始阅读","",JSON.stringify(result));]]
      ..[[      }else{]]
      ..[[        alert("章节不存在！");]]
      ..[[      }]]
      ..[[     },]]
      ..[[     error : function() {]]
      ..[[      alert("异常！");]]
      ..[[     }]]
      ..[[  });]]
      ..[[};]]
      ..[[doAjax("novel/]]..book_code..[[/]]..chapter_code..[[.html","","emmm_getChapter", "GET", 0);]]
      )
    end
    --声明函数（验证域码）
    function 验证域码(域码)
      库
      .控件操作(yzw)
      .浏览器()
      .加载链接(域码)
      yzwOnAllFinished=function (view,url)
        yzwOnAllFinished=function (view,url) end
        库
        .控件操作(webview)
        .浏览器()
        .加载JS("欢迎页验证域码回调("..库.变量操作({data.isYzwSuccess}).array2json()..");")
      end
    end
	--	function log(内容)
 --     库.控件操作(webview).浏览器()
--      .加载JS([[console.log(]]..内容..[[);]])
--		end

    --==================== 当JS调用时 ====================
    --声明一个容器
    onJs={}
    --声明子函数
    onJs.exit_to_app=function()
      activity.finish()
    end
    onJs.onLoad=function()
      --获取最近阅读()
      --登录("3440454510","zhang46010")
      webData={
        app_version=activity.getPackageManager()
        .getPackageInfo(activity.getPackageName(), 0)
        .versionName,
        app_name=activity.getPackageManager()
        .getPackageInfo(activity.getPackageName(), 0)
        .applicationInfo
        .loadLabel(activity.getPackageManager())
      }
      更新数据(webData)
      if 库.接口().是否暗色模式() then
        库.控件操作(webview).浏览器()
        .加载JS([[setDark();]])
      end
      if data.初次使用==true then
        库.控件操作(webview).浏览器()
        .加载JS([[初次使用();]])
      else
        获取书架()
      end
      开始动画.开始动画()
    end
    onJs.console=function()
      task(2000,function()
        库.对话框()
        .设置标题("webview调试器")
        .设置消息(webviewLog)
        .设置积极按钮("确定")
        .设置圆角(100)
        --.显示()
      end)
    end
    onJs.欢迎页验证域码=function(参数)
      local 域码=参数[2]
			配置.域码=域码
      验证域码(域码)
    end
    onJs.加载验证码=function(参数)
      加载验证码(参数[1])
    end
    onJs.欢迎页账号=function(参数)
      local 回调=参数[1]
      local 方法=参数[2]
      local 账号=参数[3]
      local 密码=参数[4]
      local 验证码=参数[5]
      if 方法=="登录" then
        登录(回调,账号,密码,验证码)
      elseif 方法=="注册" then
        注册(回调,账号,密码,验证码)
      end
    end
    onJs.欢迎页设置启动密码=function(参数)
      配置.密码=参数[2]
      刷新配置()
      库.控件操作(webview).浏览器()
      .加载JS(参数[1]..[[(]]..库.变量操作({true}).array2json()..[[);]])
    end
    onJs.解锁=function(参数)
      return {配置.密码==参数[1]}
    end
    onJs.获取书架=function(参数)
      获取书架()
    end
    onJs.刷新书架=function(参数)
      获取书架()
    end
    onJs.书籍简介=function(参数)
      书籍简介(参数[1])
    end
    onJs.开始阅读=function(参数)
      book_code=参数[1]
      chapter_code=参数[2]
      开始阅读(book_code,chapter_code)
    end

    --==================== 当yzw JS调用时 ====================
    --声明一个容器
    yzwOnJs={}
    --声明子函数
    yzwOnJs.加载验证码=function(参数)
      库.控件操作(webview).浏览器()
      .加载JS(参数.back..[[("]]..参数.data..[[");]])
    end
    yzwOnJs.登录=function(参数)
      print(参数[1])
      if 参数[1]:match("成功")=="成功" then
        库.控件操作(webview).浏览器()
        .加载JS(data.登录.回调..[[(]]..库.变量操作({true}).array2json()..[[);]])
        配置.账号=data.登录.账号
        配置.密码=data.登录.密码
      else
				if 参数[1]:match("已经")=="已经" then
					库.控件操作(webview).浏览器()
          .加载JS(data.登录.回调..[[(]]..库.变量操作({false,"已登录，请尝试清除emmm的所有数据后重试"}).array2json()..[[);]])
				 else
          库.控件操作(webview).浏览器()
          .加载JS(data.登录.回调..[[(]]..库.变量操作({false,参数[1]}).array2json()..[[);]])
				end
      end
    end
    yzwOnJs.注册=function(参数)
      print(参数[1])
      if 参数[1]:match("成功")=="成功" then
        库.控件操作(webview).浏览器()
        .加载JS(data.注册.回调..[[(]]..库.变量操作({true}).array2json()..[[);]])
        配置.账号=data.注册.账号
        配置.密码=data.注册.密码
      else
        库.控件操作(webview).浏览器()
        .加载JS(data.注册.回调..[[(]]..库.变量操作({false,参数[1]}).array2json()..[[);]])
      end
    end
    yzwOnJs.是否登录=function(参数)
      print(参数[1])
    end
    yzwOnJs.获取最近阅读=function(参数)
      print(参数[1])
    end
    yzwOnJs.获取书架=function(参数)
      库.控件操作(webview).浏览器()
      .加载JS([[刷新书架回调(]]..库.变量操作(参数).array2json()..[[);]])
    end
    yzwOnJs.书籍简介=function(参数)
      库.控件操作(webview).浏览器()
      .加载JS([[书籍简介回调(]]..库.变量操作(参数).array2json()..[[);]])
    end
    yzwOnJs.开始阅读=function(参数)
      库.控件操作(webview).浏览器()
      .加载JS([[开始阅读回调(]]..库.变量操作(参数).array2json()..[[);]])
    end

    设置动画提示("正在加载APP主页面")
    local homeDir=activity.getLuaDir()
    webview.loadUrl("file://"..homeDir.."/html/index.html")
    task(2000,function()
        --开始动画.开始动画()
      end
    )
  end
)
开始动画.设置动画布局ID({"提示文字","progressbar"})
开始动画.显示()
